package com.whfc.base.dao;

import com.whfc.base.dto.AppWarnFreqConfigDTO;
import com.whfc.base.entity.AppWarnFreqConfig;
import com.whfc.base.enums.AppModuleType;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface AppWarnFreqConfigMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(AppWarnFreqConfig record);

    int insertSelective(AppWarnFreqConfig record);

    AppWarnFreqConfig selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(AppWarnFreqConfig record);

    int updateByPrimaryKey(AppWarnFreqConfig record);

    /**
     * 根据组织机构和报警
     *
     * @param deptId
     * @param moduleType
     * @param type
     * @param ruleType
     * @return
     */
    AppWarnFreqConfig selectByDeptIdAndModuleType(@Param("deptId") Integer deptId,
                                                  @Param("moduleType") Integer moduleType,
                                                  @Param("type") Integer type,
                                                  @Param("ruleType") Integer ruleType);

    /**
     * 根据组织机构ID已经模块查找报警配置
     *
     * @param deptId     组织机构ID
     * @param moduleType 模块
     * @return 报警配置
     */
    List<AppWarnFreqConfigDTO> selectFreqConfigList(@Param("deptId") Integer deptId,
                                                    @Param("moduleType") Integer moduleType);

    /**
     * 根据组织机构、模块、以及配置类型删除数据
     *
     * @param deptId     组织机构
     * @param moduleType 模块
     * @param type       配置类型
     */
    void logicDel(@Param("deptId") Integer deptId,
                  @Param("moduleType") Integer moduleType,
                  @Param("type") Integer type);
}